﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using estudent.Models;
using System.Text.RegularExpressions;

namespace estudent.Controllers
{
    public class VzdrzevanjePredmetnikaController : Controller
    {
        //
        // GET: /VzdrzevanjePredmetnika/

        public ActionResult Index()
        {
            estudentEnt db = new estudentEnt();


            var smeri = (from p in db.ObvezenPredmets
                        select p.SSmeri).Distinct();

            ViewData["smeri"] = smeri;

            return View("Predmeti");
        }




        public ActionResult Ustvari()
        {
            estudentEnt db = new estudentEnt();
            
            ViewData["smeri"] = db.SSmeris.OrderBy(s=>s.imeSmer);
            ViewData["letniki"] = db.LetnikiStudijas.OrderBy(l=>l.idLetnikStudija);
            ViewData["moduli"] = db.SModulis.OrderBy(m=>m.imeModula);
            ViewData["predmeti"] = db.sPredmetis.OrderBy(p=>p.imePredmeta);
            return View();
        } 



        [AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Ustvari(FormCollection form)
        {
            estudentEnt db = new estudentEnt();

            

            try
            {
                decimal sifraP=Decimal.Parse(form["predmeti"]);
                sPredmeti pred = db.sPredmetis.FirstOrDefault(p=>p.sPredmeta==sifraP);

                pred.obvezni = (form["obvezni"].CompareTo("false")==0)? false : true;
                pred.strokovnoIzbirni = (form["strokovnoIzbirni"].CompareTo("false") == 0) ? false : true;
                pred.prostoIzbirni = (form["prostoIzbirni"].CompareTo("false") == 0) ? false : true;


                if(form["moduli"].CompareTo("prazno")!=0)
                    pred.sModula = decimal.Parse(form["moduli"]);

                ViewData["letnik"]=form["letniki"];
                ViewData["smer"]=form["smeri"];
                ViewData["predmet"]=form["predmeti"];

                // TODO: Add insert logic here
                if (!ModelState.IsValid)
                {
                    ViewData["smeri"] = db.SSmeris.OrderBy(s => s.imeSmer);
                    ViewData["letniki"] = db.LetnikiStudijas.OrderBy(l => l.idLetnikStudija);
                    ViewData["moduli"] = db.SModulis.OrderBy(m => m.imeModula);
                    return View(pred);
                }

                ObvezenPredmet obv = new ObvezenPredmet();
                obv.idLetnikStudija=Decimal.Parse(form["letniki"]);
                obv.sPredmeta = pred.sPredmeta;
                obv.sSmer=form["smeri"];
                obv.leto = DateTime.Now;
                
                db.AddToObvezenPredmets(obv);

                ViewData["uspeh"] = true;
                ViewData["sporocilo"] = "Predmet se je uspešno vnesel v predmetnik.";

                db.SaveChanges();

                return View("Rezultat");
            }
            catch
            {
                ViewData["uspeh"] = false;
                ViewData["sporocilo"] = "Predmet se ni uspešno vnesel v bazo. Ta predmet že obstaja v izbranem predmetniku.";
                return View("Rezultat");
            }
        }
        
        //
        // GET: /VzdrzevanjePredmetnika/Edit/5
 
        public ActionResult Uredi(int id, string smer, int letnik)
        {
            estudentEnt db = new estudentEnt();
            var predmet = db.sPredmetis.FirstOrDefault(p=>p.sPredmeta==id);
            //passing data
            ViewData["smeri"] = db.SSmeris;
            ViewData["letniki"] = db.LetnikiStudijas;
            ViewData["moduli"] = db.SModulis;
            //passing choosed data
            ViewData["smer"] = smer;
            ViewData["letnik"] = letnik;

            return View(predmet);
        }

        //
        // POST: /VzdrzevanjePredmetnika/Edit/5

        [HttpPost]
        public ActionResult Uredi(int id, FormCollection form)
        {
            estudentEnt db = new estudentEnt();
            sPredmeti pred = db.sPredmetis.FirstOrDefault(p=>p.sPredmeta==id);

            try
            {
                pred.obvezni = (form["obvezni"].CompareTo("false") == 0) ? false : true;
                pred.strokovnoIzbirni = (form["strokovnoIzbirni"].CompareTo("false") == 0) ? false : true;
                pred.prostoIzbirni = (form["prostoIzbirni"].CompareTo("false") == 0) ? false : true;

                if (form["moduli"].CompareTo("prazno") != 0)
                    pred.sModula = decimal.Parse(form["moduli"]);

                //poiskat obvezenPredmet vrstico tabele katero spreminjamo
                string smer=form["prejsnjaSmer"];
                decimal letnik = Decimal.Parse(form["prejsnjiLetnik"]);

                ObvezenPredmet obv = db.ObvezenPredmets.FirstOrDefault(o=>o.sPredmeta==id && o.sSmer==smer && o.idLetnikStudija==letnik);
                db.ObvezenPredmets.DeleteObject(obv);
                
                obv = new ObvezenPredmet();
                obv.sPredmeta = id;
                obv.sSmer=form["smeri"];
                obv.idLetnikStudija = Decimal.Parse(form["letniki"]);

                db.AddToObvezenPredmets(obv);
                db.SaveChanges();

                ViewData["uspeh"] = true;
                ViewData["sporocilo"] = "Urejanje je uspešno, predmet se je posodil v določenem predmetniku.";
                return View("Rezultat");
            }
            catch(Exception e)
            {
                ViewData["uspeh"] = false;
                ViewData["sporocilo"] = "Urejanje je neuspešno, že obstaja za ta predmet zapis v določenem predmetniku.";
                return View("Rezultat");
            }
        }

        //
        // GET: /VzdrzevanjePredmetnika/Delete/5

        public ActionResult Zbrisi(int id, string smer, int letnik)
        {
            estudentEnt db = new estudentEnt();
            ObvezenPredmet obv = db.ObvezenPredmets.FirstOrDefault(o => o.sPredmeta == id && o.sSmer == smer && o.idLetnikStudija == letnik);
            db.ObvezenPredmets.DeleteObject(obv);
            db.SaveChanges();

            return RedirectToAction("Index");
        }

    }
}
